/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grest.view;

/**
 *
 * @author Agustin
 */
import grest.controller.CntrlrFocusFieldsMozos;
import grest.controller.CntrlrFormMozos;
import java.awt.*;
import javax.swing.*;
import grest.controller.CntrlrFormMozosTxt;
import grest.controller.CntrlrKeysFormMozos;
import grest.controller.CntrlrMouseTablaMozos;
import java.awt.event.KeyEvent;
/**
 *
 * @author Agustin,Santiago,Rodrigo
 */
public class FormMozos extends JFrame implements AbstractABBMView {
    public static final Integer MOZO_NO_SELECC=0;
    private JFrame form = new JFrame("Terminal Mozos");
    private JPanel pnlMesas = new JPanel();
    private JSplitPane splitPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
    private JSplitPane splitPanelPedidos = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    private JPanel pnlListaPedidos = new JPanel();
    private JPanel pnlBotonesInferiores = new JPanel();
    private JPanel pnlBotonesPedidos = new JPanel();
    private JButton btnRefreshPedidos = new JButton("Refrescar Datos");
    private JButton btnBuscar = new JButton("Buscar");
    private JPanel pnlPedidos = new JPanel();
    private JPanel pnlNewPedidos = new JPanel();
    private JPanel pnlCargaPedido = new JPanel();
    private JPanel pnlLabelsPedidos = new JPanel();
    private JPanel pnlFieldsPedidos = new JPanel();
    private JPanel pnlBotonesExtrasPedidos = new JPanel();
    private JLabel lblID = new JLabel("ID del Producto : ");
    private JTextField txtID = new JTextField(5);
    private JPanel pnlCantProducto = new JPanel();
    private JLabel lblCantidad = new JLabel("Cantidad : ");
    private JLabel lblNombreProducto = new JLabel("Descripcion : ");
    private JLabel lblPrecio = new JLabel("Precio : ");
    private JTextField txtPrecio = new JTextField(2);
    private JLabel lblDescripcion = new JLabel("");
    private JTextField txtCantidad = new JTextField(2);
    private JPanel pnlguardarProducto = new JPanel();
    private JTable tblMesas = new JTable();
    private JScrollPane scpTblMesas = new JScrollPane(tblMesas);
    private JTable tblPedidos = new JTable();
    private JScrollPane scpTblPedidods = new JScrollPane(tblPedidos);
    private JButton btnGuardar = new JButton("Guardar Pedido");
    private JButton btnsalir = new JButton("salir");
    private JPanel pnlSeleccionMozos=new JPanel();
    private JTextField txtNroMozo = new JTextField("1");
    private JLabel lblNroMozo=new JLabel("Número de mozo");
    private JLabel lblNombreMozo = new JLabel();
    private Integer mozoActual;
    private CntrlrFormMozos myController;
    
    
    public FormMozos(){
            form.setLayout(new BorderLayout(5,5));

            form.add(splitPanel,BorderLayout.CENTER);
            form.add(pnlBotonesInferiores,BorderLayout.SOUTH);
            ////////////Divisor Central Horizontal  ////////////            
            splitPanel.setRightComponent(pnlPedidos);
            splitPanel.setLeftComponent(pnlMesas);
            pnlPedidos.setLayout(new BorderLayout(5,5));
            pnlPedidos.add(splitPanelPedidos,BorderLayout.CENTER);
            /////////// Divisor Derecho Vertical  //////////////
            splitPanelPedidos.setTopComponent(pnlListaPedidos);
            splitPanelPedidos.setBottomComponent(pnlNewPedidos);
            ///////////  Zona Superior Derecha  /////////////
            pnlListaPedidos.setLayout(new BorderLayout(5,5));
            pnlListaPedidos.setBorder(javax.swing.BorderFactory.createTitledBorder("Lista de pedidos de la mesa"));
            pnlListaPedidos.add(scpTblPedidods,"Center");
            pnlBotonesPedidos.setLayout(new GridLayout(1,2));
            /////////////  Botones inferiores  //////////////////////////
            
            ////////////// Zona Inferior Derecha  /////////////////
            pnlNewPedidos.setLayout(new GridLayout(2,1));
            pnlNewPedidos.setBorder(javax.swing.BorderFactory.createTitledBorder("Agregar Pedidos"));
            pnlNewPedidos.add(pnlCargaPedido);
            pnlCargaPedido.setLayout(new GridLayout(1,3));
            pnlCargaPedido.add(pnlLabelsPedidos);
            pnlCargaPedido.add(pnlFieldsPedidos);
            pnlCargaPedido.add(pnlBotonesExtrasPedidos);
            pnlLabelsPedidos.setLayout(new GridLayout(4,1));
            pnlLabelsPedidos.add(lblID);
            pnlLabelsPedidos.add(lblNombreProducto);
            pnlLabelsPedidos.add(lblCantidad);
            pnlLabelsPedidos.add(lblPrecio);
            pnlFieldsPedidos.setLayout(new GridLayout(4,1));
            pnlFieldsPedidos.add(txtID);
            pnlFieldsPedidos.add(lblDescripcion);
            pnlFieldsPedidos.add(txtCantidad);
            pnlFieldsPedidos.add(txtPrecio);
            pnlBotonesExtrasPedidos.setLayout(new GridLayout(4,1));
            pnlBotonesExtrasPedidos.add(btnBuscar);
            pnlNewPedidos.add(pnlguardarProducto);
            pnlguardarProducto.setLayout(new BorderLayout(5,5));
            pnlguardarProducto.add(btnGuardar,BorderLayout.SOUTH);
            /////////////  Zona Tabla Mesas      //////////////////
            pnlMesas.setBorder(javax.swing.BorderFactory.createTitledBorder("Mesas en servicio"));
            pnlMesas.setLayout(new BorderLayout(5,5));
            pnlSeleccionMozos.setLayout(new GridLayout(1, 4));
            pnlSeleccionMozos.add(lblNroMozo);
            pnlSeleccionMozos.add(txtNroMozo);
            pnlSeleccionMozos.add(lblNombreMozo);
            pnlMesas.add(pnlSeleccionMozos,BorderLayout.NORTH);
            pnlMesas.add(scpTblMesas,"Center");
            pnlMesas.add(btnRefreshPedidos,BorderLayout.SOUTH);
            ////////////////////////////////////////////////////
            form.setSize(1024,600);
            form.setVisible(true);
            splitPanel.setDividerLocation(0.6);
            splitPanelPedidos.setDividerLocation(0.8);
            form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            CntrlrFormMozos controladorMozos=new CntrlrFormMozos(this);
            CntrlrFocusFieldsMozos contFocus = new CntrlrFocusFieldsMozos(this);
            btnRefreshPedidos.addActionListener(controladorMozos);
            btnGuardar.addActionListener(controladorMozos);
            txtID.addFocusListener(contFocus);
            CntrlrFormMozosTxt textEventHandler = new CntrlrFormMozosTxt(this);
            txtNroMozo.addKeyListener(textEventHandler);
            myController = controladorMozos;
            CntrlrMouseTablaMozos ctrlTMM = new CntrlrMouseTablaMozos(this);
            tblMesas.addMouseListener(ctrlTMM);
            this.mozoActual=1;
            CntrlrKeysFormMozos controlKeys = new CntrlrKeysFormMozos(this);
            tblMesas.addKeyListener(controlKeys);
            btnBuscar.addActionListener(controladorMozos);        
            //Tab policy
            TabPolicy ordenTabs = new TabPolicy();
            ordenTabs.addIndexedComponent(txtNroMozo);
            ordenTabs.addIndexedComponent(tblMesas);
            ordenTabs.addIndexedComponent(txtID);
            ordenTabs.addIndexedComponent(txtCantidad);
            ordenTabs.addIndexedComponent(txtPrecio);
            ordenTabs.addIndexedComponent(btnGuardar);
            form.setFocusTraversalPolicy(ordenTabs);
            //Atajos de teclado
            btnRefreshPedidos.setMnemonic(KeyEvent.VK_R);
            btnBuscar.setMnemonic(KeyEvent.VK_B);
            btnGuardar.setMnemonic(KeyEvent.VK_S);
             ///////////////Crear el controlador y el modelo ////////////////////////////////
            form.setVisible(true);
    }
    @Deprecated
    public JTable getTableMesas(){
       return tblMesas;
    }
    @Deprecated
    public JTable getTablePedidos(){
        return tblPedidos;
    }
    /**
     * Permite acceder a los controles del formulario
     * @param name
     * @return JComponent
     */
    @Override
    public JComponent getControls(String name){
        if(name.equals("tblMesas")) return tblMesas;
        else if(name.equals("tblPedidos")) return tblPedidos;
        else if(name.equals("btnRefreshPedidos")) return btnRefreshPedidos;
        else if(name.equals("btnBuscar")) return btnBuscar;
        else if(name.equals("btnGuardar")) return btnGuardar;
        else if(name.equals("txtCantidad")) return txtCantidad;
        else if(name.equals("txtID")) return txtID;
        else if(name.equals("txtPrecio")) return txtPrecio;
        else if(name.equals("lblNombreProducto")) return lblNombreProducto;
        else if(name.equals("lblDescripcion")) return lblDescripcion;
        else if(name.equals("txtNroMozo")) return txtNroMozo;
        else if(name.equals("lblNombreMozo")) return lblNombreMozo;
        else if(name.equals("btnBuscar")) return btnBuscar;
        else return null;
    }
    public void setMozoActual(Integer nroMozo) throws Exception{
        if(nroMozo>=0){
            this.mozoActual=nroMozo;
        }else throw new Exception("Número de mozo inválido", new Throwable("Número de mozo no correcto"));
    }
    public Integer getMozoActual(){
        return this.mozoActual;
    }
    public final CntrlrFormMozos getCntrlr(){
        return myController;
    }
}
